package com.xy.biz.xd.service;

import com.xy.biz.xd.domain.bo.DocumentFlowNewAndModifyBO;
import com.xy.biz.xd.domain.query.DocumentFlowNewAndModifyQuery;
import com.xy.biz.xd.domain.req.*;
import com.xy.lang.domain.Result;

import java.util.List;

public interface DocumentFlowNewAndModifyService {

    Result<?> editDocumentFlow(EditDocumentFlowRequest request);

    Result<?> applyApprovalDocumentFlow(HandleDocumentFlowRequest request);

    Result<?> reviewDocumentFlow(ReviewDocumentFlowRequest request);

    Result<?> editAgainDocumentFlow(EditAgainDocumentFlowRequest request);

    Result<?> formatAuditDocumentFlow(HandleDocumentFlowRequest request);

    Result<?> contentAuditDocumentFlow(HandleDocumentFlowRequest request);

    Result<?> approvalDocumentFlow(HandleDocumentFlowRequest request);

//    Result<?> releaseDocumentFlow(ReleaseDocumentFlowRequest request);

    Result<?> getDocumentFlowNewAndModify(Long documentFlowId);

    /**
     * 查找多个
     *
     * @param query 查找条件
     */
    List<DocumentFlowNewAndModifyBO> listDocumentFlowNewAndModify(DocumentFlowNewAndModifyQuery query);

    /**
     * 统计个数
     *
     * @param query 查找条件
     */
    int countDocumentFlowNewAndModify(DocumentFlowNewAndModifyQuery query);

/*
    *//**
     * 撤回
     * @param request
     * @return
     *//*
    Result<?> withdraw(HandleDocumentFlowRequest request);*/

    /**
     * 终止
     * @param request
     * @return
     */
    Result<?> termination(HandleDocumentFlowRequest request);
}
